package top.dancun.eascrawler.utils;

import com.alibaba.fastjson2.JSONObject;

import java.util.Map;
import java.util.Objects;

/**
 * 知网表单格式化工具类
 * @author dancun
 */
public class CNKIFormUtils {
    private static final String[] fields = new String[]{"author", "from", "suject", "time"};

    /**
     *
     * @param formData static下json数据
     * @param map 查询字段
     * @return 格式化后json
     */
    public static JSONObject formFormat(JSONObject formData, Map<String,String> map ){
        //表单JSON
        JSONObject mainForm = formData.getJSONObject("main");
        //查询主题
        JSONObject queryJson = mainForm.getJSONObject("QueryJson");


        for(String field :fields) {
            //非空判断
            if (Objects.nonNull(map.get(field)) && !"".equals(map.get(field))) {
                String value = map.get(field);
                //查询字段相关json
                JSONObject fieldJson = formData.getJSONObject(field);
//                需要修改的数据所在节点
                JSONObject itemJson = fieldJson.getJSONArray("Items").getJSONObject(0);
                if ("time".equals(field)) {
                    String startData = map.get("startData");
                    String endData = map.get("endData");
                    itemJson.put("Value", startData);
                    itemJson.put("Value2", endData);
                    queryJson.getJSONObject("QNode").getJSONArray("QGroup").getJSONObject(1).getJSONArray("ChildItems").add(fieldJson);
                } else {
                    itemJson.put("Value", value);
                    itemJson.put("Title", value);
                    queryJson.getJSONObject("QNode").getJSONArray("QGroup").getJSONObject(0).getJSONArray("ChildItems").add(fieldJson);
                }
            }
        }

        mainForm.put("QueryJson", queryJson.toString());

        return mainForm;
    }
    public static JSONObject formFormatCh(JSONObject formData, Map<String,String> map){
        JSONObject formJson =   formFormat(formData,map);
        formJson.put("DBCode","CFLS");
        JSONObject queryJson = JSONObject.parse(formJson.getString("QueryJson"));
        queryJson.put("DBCode","CFLS");
        queryJson.put("CodeLang","ch");
        formJson.put("QueryJson", queryJson.toString());

        return formJson;
    }
}
